{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0",
    "_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#!/usr/bin/env python\n",
    "# coding: utf-8\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from keras.models import Sequential\n",
    "from keras.layers.core import Dense, Dropout, Activation, Flatten\n",
    "from keras.layers.convolutional import Conv1D\n",
    "from keras.layers import AveragePooling1D\n",
    "from keras.utils import np_utils\n",
    "from keras.optimizers import Adam\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from contextlib import redirect_stdout\n",
    "from keras.callbacks import EarlyStopping, ModelCheckpoint\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from keras.wrappers.scikit_learn import KerasClassifier\n",
    "\n",
    "\n",
    "def get_data():\n",
    "    data = pd.read_csv(\"/kaggle/input/train-cnn/p2pData.txt\", sep=\" \", header=None)\n",
    "    label = pd.read_csv(\"/kaggle/input/train-cnn/p2pLabel.txt\", sep=\" \", header=None)\n",
    "    data_columns = data.shape[1]\n",
    "\n",
    "    for i in range(0, data_columns):\n",
    "        if data[i][0] != data[i][0]:\n",
    "            del data[i]\n",
    "\n",
    "    data_columns = data.shape[1]\n",
    "    data.columns = np.arange(0, data_columns)\n",
    "\n",
    "    return data, label\n",
    "\n",
    "\n",
    "data, label = get_data()\n",
    "#selectedFeatureList = [0, 1, 61, 62]\n",
    "#data = data[selectedFeatureList]\n",
    "#data_columns = data.shape[1]\n",
    "#data.columns = np.arange(0, data_columns)\n",
    "\n",
    "scaler = StandardScaler()\n",
    "data = scaler.fit_transform(data)\n",
    "\n",
    "data = np.array(data)\n",
    "label = np.array(label)\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(data, label, test_size=0.2)\n",
    "n_samples, n_features = X_train.shape\n",
    "\n",
    "\n",
    "def toOneHot(label):\n",
    "    enc = OneHotEncoder()\n",
    "    enc.fit(label)\n",
    "    label = enc.transform(label).toarray()\n",
    "    return label\n",
    "\n",
    "\n",
    "y_train = toOneHot(y_train)\n",
    "y_test = toOneHot(y_test)\n",
    "\n",
    "\n",
    "def create_model():\n",
    "\n",
    "    adam = Adam(lr=0.0002,\n",
    "                beta_1=0.9,\n",
    "                beta_2=0.999,\n",
    "                epsilon=1e-08,\n",
    "                amsgrad=True)\n",
    "\n",
    "    model = Sequential()\n",
    "    model.add(Dense(512, activation='relu', input_shape=(n_features, )))\n",
    "    model.add(Dropout(0.2))\n",
    "    model.add(Dense(512, activation='relu'))\n",
    "    model.add(Dropout(0.2))\n",
    "    model.add(Dense(128, activation='relu'))\n",
    "    model.add(Dropout(0.2))\n",
    "    model.add(Dense(10, activation='relu'))\n",
    "    model.add(Dense(5))\n",
    "    model.add(Activation('softmax'))\n",
    "    model.compile(loss='categorical_crossentropy',\n",
    "                  optimizer=adam,\n",
    "                  metrics=['accuracy'])\n",
    "\n",
    "    return model\n",
    "\n",
    "\n",
    "model = create_model()\n",
    "\n",
    "with open('Model_Architecture.txt', 'w') as f:\n",
    "    with redirect_stdout(f):\n",
    "        model.summary()\n",
    "\n",
    "callbacks = [\n",
    "    EarlyStopping(monitor='val_acc',\n",
    "                  min_delta=0.00001,\n",
    "                  patience=6,\n",
    "                  verbose=0,\n",
    "                  mode='max',\n",
    "                  restore_best_weights=False),\n",
    "    ModelCheckpoint(filepath='./best_model.h5',\n",
    "                    monitor='val_acc',\n",
    "                    mode=\"max\",\n",
    "                    save_weights_only=False,\n",
    "                    save_best_only=True)\n",
    "]\n",
    "\n",
    "history = model.fit(X_train,\n",
    "                    y_train,\n",
    "                    batch_size=120,\n",
    "                    epochs=160,\n",
    "                    verbose=0,\n",
    "                    validation_split=0.2,\n",
    "                    callbacks=callbacks)\n",
    "\n",
    "#model.save(\"./best_model.h5\")\n",
    "\n",
    "training_score, training_accuracy = model.evaluate(X_train, y_train, verbose=0)\n",
    "test_score, test_accuracy = model.evaluate(X_test, y_test, verbose=0)\n",
    "with open('output.txt', 'w') as f:\n",
    "    with redirect_stdout(f):\n",
    "        print('Training score:', training_score)\n",
    "        print('Training accuracy:', training_accuracy)\n",
    "        print('Test score:', test_score)\n",
    "        print('Test accuracy:', test_accuracy)\n",
    "\n",
    "plt.plot(history.history['loss'], label='train')\n",
    "plt.plot(history.history['val_loss'], label='val')\n",
    "plt.xlabel(\"epoch\")\n",
    "plt.title(\"Loss\")\n",
    "plt.legend(loc=\"best\")\n",
    "plt.savefig(\"./loss.png\")\n",
    "plt.show()\n",
    "\n",
    "plt.plot(history.history['accuracy'], label='train')\n",
    "plt.plot(history.history['val_accuracy'], label='val')\n",
    "plt.xlabel(\"epoch\")\n",
    "plt.title(\"Accuracy\")\n",
    "plt.legend(loc=\"best\")\n",
    "plt.savefig(\"./accuracy.png\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
